package com.xywl.escort.di;

import com.xywl.escort.view.address.AddAddressActivity;
import com.xywl.escort.view.address.AddAddressModule;
import com.xywl.escort.view.address.ManageAddressActivity;
import com.xywl.escort.view.address.ManageAddressModule;
import com.xywl.escort.view.bandcard.BandCardBindActivity;
import com.xywl.escort.view.bandcard.BandCardBindModule;
import com.xywl.escort.view.bandcard.BandCardDialogListActivity;
import com.xywl.escort.view.bandcard.BandCardDialogListModule;
import com.xywl.escort.view.bandcard.BandCardListActivity;
import com.xywl.escort.view.bandcard.BandCardListModule;
import com.xywl.escort.view.bandcard.BandCardSecondStepActivity;
import com.xywl.escort.view.bandcard.BandCardSecondStepModule;
import com.xywl.escort.view.bandcard.BandCardThirdStepActivity;
import com.xywl.escort.view.bandcard.BandCardThirdStepModule;
import com.xywl.escort.view.bandcard.CooperativeBandActivity;
import com.xywl.escort.view.bandcard.CooperativeBandModule;
import com.xywl.escort.view.certified.CertifiedActivity;
import com.xywl.escort.view.certified.CertifiedModule;
import com.xywl.escort.view.coupon.CouponActivity;
import com.xywl.escort.view.coupon.CouponDetailActivity;
import com.xywl.escort.view.coupon.CouponDetailModule;
import com.xywl.escort.view.coupon.CouponModule;
import com.xywl.escort.view.evaluate.OrderEvaluateActivity;
import com.xywl.escort.view.evaluate.OrderEvaluateModule;
import com.xywl.escort.view.evaluate.ProductEvaluateActivity;
import com.xywl.escort.view.evaluate.ProductEvaluateModule;
import com.xywl.escort.view.farm.FarmModule;
import com.xywl.escort.view.farm.ProjectDetailActivity;
import com.xywl.escort.view.farm.ProjectDetailModule;
import com.xywl.escort.view.farm.rank.SubscribeRankModule;
import com.xywl.escort.view.home.HomeModule;
import com.xywl.escort.view.home.NewWelfareActivity;
import com.xywl.escort.view.home.NewWelfareModule;
import com.xywl.escort.view.main.MainActivity;
import com.xywl.escort.view.market.MarketModule;
import com.xywl.escort.view.market.ProductDetailsActivity;
import com.xywl.escort.view.market.ProductDetailsModule;
import com.xywl.escort.view.message.MessageActivity;
import com.xywl.escort.view.message.MessageDetailActivity;
import com.xywl.escort.view.message.MessageDetailModule;
import com.xywl.escort.view.message.MessageModule;
import com.xywl.escort.view.notice.NoticeListActivity;
import com.xywl.escort.view.notice.NoticeListModule;
import com.xywl.escort.view.operation.OperationRecordActivity;
import com.xywl.escort.view.operation.OperationRecordModule;
import com.xywl.escort.view.order.PurchaseOrderActivity;
import com.xywl.escort.view.order.SubscriptionOrderActivity;
import com.xywl.escort.view.order.delivery.DeliveryDetailActivity;
import com.xywl.escort.view.order.delivery.DeliveryDetailModule;
import com.xywl.escort.view.order.delivery.DeliveryOrderModule;
import com.xywl.escort.view.order.purchase.BuyAgainActivity;
import com.xywl.escort.view.order.purchase.BuyAgainModule;
import com.xywl.escort.view.order.purchase.PurchaseOrderDetailActivity;
import com.xywl.escort.view.order.purchase.PurchaseOrderDetailModule;
import com.xywl.escort.view.order.purchase.all.PurchaseOrderModule;
import com.xywl.escort.view.order.purchase.completed.CompletedOrderModule;
import com.xywl.escort.view.order.purchase.delivered.DeliveredOrderModule;
import com.xywl.escort.view.order.purchase.payment.PendingPaymentOrderModule;
import com.xywl.escort.view.order.purchase.receipt.ReceiptOrderModule;
import com.xywl.escort.view.order.repo.RepoDetailActivity;
import com.xywl.escort.view.order.repo.RepoDetailModule;
import com.xywl.escort.view.order.repo.RepoOrderModule;
import com.xywl.escort.view.order.search.SearchOrderActivity;
import com.xywl.escort.view.order.search.SearchOrderModule;
import com.xywl.escort.view.order.submit.SubmitOrderActivity;
import com.xywl.escort.view.order.submit.SubmitOrderModule;
import com.xywl.escort.view.order.subscribe.SubscribeDetailActivity;
import com.xywl.escort.view.order.subscribe.SubscribeDetailModule;
import com.xywl.escort.view.order.subscribe.SubscribeOrderModule;
import com.xywl.escort.view.order.subscription.DeliveryDialogActivity;
import com.xywl.escort.view.order.subscription.DeliveryDialogModule;
import com.xywl.escort.view.order.subscription.RepurchaseDialogActivity;
import com.xywl.escort.view.order.subscription.RepurchaseDialogModule;
import com.xywl.escort.view.order.subscription.SubscriptionOrderModule;
import com.xywl.escort.view.pay.VerifyPayPwdActivity;
import com.xywl.escort.view.pay.VerifyPayPwdModule;
import com.xywl.escort.view.pay.product.ProductPayConfirmActivity;
import com.xywl.escort.view.pay.product.ProductPayConfirmModule;
import com.xywl.escort.view.pay.product.ProductPayDialogActivity;
import com.xywl.escort.view.pay.product.ProductPayDialogModule;
import com.xywl.escort.view.pay.project.ProjectPayConfirmActivity;
import com.xywl.escort.view.pay.project.ProjectPayConfirmModule;
import com.xywl.escort.view.pay.project.ProjectPayDialogActivity;
import com.xywl.escort.view.pay.project.ProjectPayDialogModule;
import com.xywl.escort.view.pay.project.SubscribeOrderPayDialogActivity;
import com.xywl.escort.view.pay.project.SubscribeOrderPayDialogModule;
import com.xywl.escort.view.pwd.ConfirmPayPwdActivity;
import com.xywl.escort.view.pwd.ConfirmPayPwdModule;
import com.xywl.escort.view.pwd.ModifyPayPwdActivity;
import com.xywl.escort.view.pwd.ModifyPayPwdModule;
import com.xywl.escort.view.pwd.ModifyPwdActivity;
import com.xywl.escort.view.pwd.ModifyPwdModule;
import com.xywl.escort.view.pwd.RecoverPayPwdActivity;
import com.xywl.escort.view.pwd.RecoverPayPwdModule;
import com.xywl.escort.view.pwd.RecoverPwdActivity;
import com.xywl.escort.view.pwd.RecoverPwdModule;
import com.xywl.escort.view.record.FundRecordsActivity;
import com.xywl.escort.view.record.FundRecordsModule;
import com.xywl.escort.view.setting.SettingsActivity;
import com.xywl.escort.view.setting.SettingsModule;
import com.xywl.escort.view.splash.SplashActivity;
import com.xywl.escort.view.splash.SplashModule;
import com.xywl.escort.view.tips.TipsModule;
import com.xywl.escort.view.treasure.TreasureModule;
import com.xywl.escort.view.user.ModifyPhoneActivity;
import com.xywl.escort.view.user.ModifyPhoneModule;
import com.xywl.escort.view.user.UserInfoActivity;
import com.xywl.escort.view.user.UserInfoModule;
import com.xywl.escort.view.user.login.LoginActivity;
import com.xywl.escort.view.user.login.LoginModule;
import com.xywl.escort.view.user.register.RegisterActivity;
import com.xywl.escort.view.user.register.RegisterModule;
import com.xywl.escort.view.withdraw.WithdrawActivity;
import com.xywl.escort.view.withdraw.WithdrawModule;

import dagger.Module;
import dagger.android.ContributesAndroidInjector;

@Module
abstract class ActivityBindingModule {

    @ActivityScoped
    @ContributesAndroidInjector(modules = {HomeModule.class, FarmModule.class, MarketModule.class, TreasureModule.class, TipsModule.class})
    abstract MainActivity mainActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ManageAddressModule.class})
    abstract ManageAddressActivity manageAddressActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = AddAddressModule.class)
    abstract AddAddressActivity addAddressActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = NoticeListModule.class)
    abstract NoticeListActivity noticeListActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = MessageModule.class)
    abstract MessageActivity messageActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = MessageDetailModule.class)
    abstract MessageDetailActivity messageDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = ModifyPhoneModule.class)
    abstract ModifyPhoneActivity modifyPhoneActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = ModifyPwdModule.class)
    abstract ModifyPwdActivity modifyPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = ModifyPayPwdModule.class)
    abstract ModifyPayPwdActivity modifyPayPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SubscriptionOrderModule.class, SubscribeOrderModule.class, RepoOrderModule.class, DeliveryOrderModule.class})
    abstract SubscriptionOrderActivity subscriptionOrderActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {PurchaseOrderModule.class, PendingPaymentOrderModule.class, CompletedOrderModule.class, DeliveredOrderModule.class, ReceiptOrderModule.class})
    abstract PurchaseOrderActivity purchaseOrderActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProductDetailsModule.class})
    abstract ProductDetailsActivity productDetailsActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {OperationRecordModule.class})
    abstract OperationRecordActivity operationRecordActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {FundRecordsModule.class})
    abstract FundRecordsActivity fundRecordsActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {CouponModule.class})
    abstract CouponActivity couponActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {CouponDetailModule.class})
    abstract CouponDetailActivity couponDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SearchOrderModule.class})
    abstract SearchOrderActivity searchOrderActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SubmitOrderModule.class})
    abstract SubmitOrderActivity submitOrderActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BuyAgainModule.class})
    abstract BuyAgainActivity buyAgainActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProductEvaluateModule.class})
    abstract ProductEvaluateActivity productEvaluateActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {OrderEvaluateModule.class})
    abstract OrderEvaluateActivity orderEvaluateActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {RegisterModule.class})
    abstract RegisterActivity registerActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {LoginModule.class})
    abstract LoginActivity loginActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {RecoverPwdModule.class})
    abstract RecoverPwdActivity recoverPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {RecoverPayPwdModule.class})
    abstract RecoverPayPwdActivity recoverPayPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {UserInfoModule.class})
    abstract UserInfoActivity userInfoActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SettingsModule.class})
    abstract SettingsActivity settingsActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {CertifiedModule.class})
    abstract CertifiedActivity certifiedActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ConfirmPayPwdModule.class})
    abstract ConfirmPayPwdActivity confirmPayPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProjectDetailModule.class, SubscribeRankModule.class})
    abstract ProjectDetailActivity projectDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {PurchaseOrderDetailModule.class})
    abstract PurchaseOrderDetailActivity purchaseOrderDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {VerifyPayPwdModule.class})
    abstract VerifyPayPwdActivity verifyPayPwdActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BandCardBindModule.class})
    abstract BandCardBindActivity bandCardBindActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {RepoDetailModule.class})
    abstract RepoDetailActivity repoDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {DeliveryDetailModule.class})
    abstract DeliveryDetailActivity deliveryDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SubscribeDetailModule.class})
    abstract SubscribeDetailActivity subscribeDetailActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {DeliveryDialogModule.class})
    abstract DeliveryDialogActivity deliveryDialogActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {RepurchaseDialogModule.class})
    abstract RepurchaseDialogActivity repurchaseDialogActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProjectPayDialogModule.class})
    abstract ProjectPayDialogActivity projectPayDialogActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SubscribeOrderPayDialogModule.class})
    abstract SubscribeOrderPayDialogActivity subscribeOrderPayDialogActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProductPayDialogModule.class})
    abstract ProductPayDialogActivity productPayDialogActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BandCardListModule.class})
    abstract BandCardListActivity bandCardListActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BandCardDialogListModule.class})
    abstract BandCardDialogListActivity bandCardDialogListActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BandCardSecondStepModule.class})
    abstract BandCardSecondStepActivity bandCardSecondStepActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {BandCardThirdStepModule.class})
    abstract BandCardThirdStepActivity bandCardThirdStepActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {WithdrawModule.class})
    abstract WithdrawActivity withdrawActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {SplashModule.class})
    abstract SplashActivity splashActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProjectPayConfirmModule.class})
    abstract ProjectPayConfirmActivity projectPayConfirmActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {ProductPayConfirmModule.class})
    abstract ProductPayConfirmActivity productPayConfirmActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {CooperativeBandModule.class})
    abstract CooperativeBandActivity cooperativeBankActivity();

    @ActivityScoped
    @ContributesAndroidInjector(modules = {NewWelfareModule.class})
    abstract NewWelfareActivity newWelfareActivity();
}